package com.jtfr;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.jtfr.core.SqlSession;
import com.jtfr.core.SqlSessionFactory;
import com.jtfr.dao.UserDao;

public class TestClient {
 
	private static Logger LOGGER = LoggerFactory.getLogger(TestClient.class);
	
    public static void main(String[] args) {
 
    	// 初始化
        SqlSessionFactory factory = new SqlSessionFactory();
        // 创建 SqlSession 获取一个代理对象
        SqlSession sqlSession = factory.openSession();
 
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        // 插入一条数据
        LOGGER.info("插入一条数据 "+userDao.insertUser("jtfr1", 100, "sz100"));
        // 查询一条数据
        LOGGER.info("查询一条数据"+userDao.getUserInfo(7));
        // 更新一条数据 注意要更新的 id 先去数据库看下是否存在
        LOGGER.info("更新一条数据"+userDao.updateUserName("jtfrupdate", 3));
        // 删除一条数据 第一条语句不存在，所以为 0 下面那条为 1
        LOGGER.info("删除一条数据"+userDao.deleteUserByIdAndName(7, "jtfrupdate"));
        LOGGER.info("删除一条数据"+userDao.deleteUserByIdAndName(7, "jtfr1"));
        
        
        // 下一步把 List存储给做了
        // List<User> user = userDao.getUser();
        
        // 修改数据
        //LOGGER.info(""+userDao.getUserInfo(2));
        // 测试多线程插入数据，是否是用了线程池
        // TestMultTherad(factory);        
    }

	private static void TestMultTherad(SqlSessionFactory factory) {
		for (int i = 0; i < 20; i++) {
        	// 创建 SqlSession 获取一个代理对象
              new Thread(new Runnable() {
      			
      			@Override
      			public void run() {
      				SqlSession sqlSession = factory.openSession();
      				UserDao userDao = sqlSession.getMapper(UserDao.class);
      				for (int i = 0; i < 10; i++) {
      					try {
      						Thread.sleep(1000);
      					} catch (InterruptedException e) {
      						e.printStackTrace();
      					}
      					userDao.insertUser("jtfr1", 100, "sz100");
      				}
      			}
      		}).start();
          }
	}
}
